<?php

class Planesmejoramiento_IndexController extends Zend_Controller_Action {
	private $nav;
	
     public function init() {
		$this->nav = new App_Util_Navegacion();
		$this->nav->agregar_navegacion ( "Listado de planes de mejoramiento", "/planesmejoramiento/index", "Listado de planes de mejoramiento" );
		
	}
	
    public function indexAction() {
        $this->view->nav = $this->nav;
        $Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
		
        $datos = array();
        if (App_User::getCodigoPadreRol()!= Roles_Model_Roles::CODPADRE_ADMIN){
            $datos["codusuario"] = App_User::getCodigoUsuario();
        }
        
        $this->view->datos = $Planesmejoramiento->getPlanes($datos);
    }

    public function crearplanAction() {
        $Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
        
        $datos = array();
        
        $accion = "Crear ";
        $codplanmejoramiento = $this->_getParam("codplanmejoramiento");
        if (!empty($codplanmejoramiento)){
            $datos= $Planesmejoramiento->getPlan($codplanmejoramiento);
            $accion = "Modificar ";
        }
        
        $this->nav->agregar_navegacion("{$accion} Plan de Mejoramiento", "","{$accion} Plan de Mejoramiento");
		$this->view->nav = $this->nav;

        $form = new Planesmejoramiento_Form_Crearplan();
		$form->populate($datos);
        $form->setAction($this->view->baseUrl("/planesmejoramiento/index/guardarplan"));
        $form->recoverFromRedirect();
		$this->view->form = $form;
    }
    
	
    public function guardarplanAction(){
         $form = new Planesmejoramiento_Form_Crearplan();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())){
			try {
				$Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
				$datos = $this->getRequest()->getPost();
				$datos["tipoplan"] = 2;
				$key = $Planesmejoramiento->guardarPlan($datos);
				if (empty($datos["codplanmejoramiento"])){
				    $datos["codplanmejoramiento"] = $key;
				}
				
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
        } else {
            $form->setStateRedirect();
        }
        $cadena = "";
        
        if (!empty($datos["codplanmejoramiento"])){
            $parametros["codplanmejoramiento"] = $datos["codplanmejoramiento"];
            $cadena =App_Util_SafeUrl::encriptar($parametros, false);
            $this->_helper->redirector( "crearplan","index","planesmejoramiento",$cadena);
        }
         $this->_helper->redirector( "crearplan","index","planesmejoramiento");
	}
	
   public function eliminarplanAction() {
        try {
            $Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
            $Planesmejoramiento->eliminarPlan($this->_getParam("codplanmejoramiento"));
            $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $this->_helper->redirector("index");
    }
		
    
	public function actividadesplanAction() {
		$Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
		
        $this->nav->agregar_navegacion("Actividades plan de Mejoramiento", "","Actividades plan de Mejoramiento");
		$this->view->nav = $this->nav;
		
		$accion    = $this->_getParam("accion");
		$codplanmejoramiento = $this->_getParam("codplanmejoramiento");
		$this->view->datosplan = $Planesmejoramiento->getPlan($codplanmejoramiento);

        $this->view->datos_actividades =$Planesmejoramiento->getActividadesPlan($codplanmejoramiento);

        $this->view->mostrarform = false;
        if($accion == "crear" || $accion == "modificar") {
	        $opcion = 1;
	        if ($this->view->datosplan["tipoplan"]==1){
	            $valoracionService = new Autoevaluacion_Model_DiligenciarListas();
	            $datos_seccion = $valoracionService->getTramiteSeccion($this->view->datos_actividades[0]["codtramiteseccion"]);
	            $secciones = $valoracionService->getDiligenciaTramiteLista(array("codtramitelista"=>$datos_seccion["codtramitelista"]),1);
    	        $array_factores = $valoracionService->getArrayFactores($secciones);
	            $form = new Planesmejoramiento_Form_Actividadesplanauto(array("factores"=>$array_factores));
            }else{
	            $form = new Planesmejoramiento_Form_Actividadesplan();
            }
            
            $form->setAction($this->view->baseUrl("/planesmejoramiento/index/guardaractividadplan"));
	        $form->recoverFromRedirect();
	        $codactividad = $this->_getParam("codactividad");
	        if(!empty($codactividad)){
	            $datos = $Planesmejoramiento->getActividadPlan($codactividad);
	        }
	        $datos["codplanmejoramiento"] = $codplanmejoramiento;
	        $form->populate($datos);
            $this->view->form = $form;
	        $this->view->mostrarform = true;
	        
        }
	}
    
	public function guardaractividadplanAction(){
        $Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
        $form = new Planesmejoramiento_Form_Actividadesplan();
        $parametros = array();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $parametros["codplanmejoramiento"]=$this->_getParam("codplanmejoramiento");
                $datos = $this->getRequest()->getPost();
                $codactividad = $Planesmejoramiento->guardarActividadPlan($datos);
                $datos_adj = $form->archivo->getFileInfo();
                
			    $ext = pathinfo( $datos_adj["archivo"]["name"], PATHINFO_EXTENSION );
			    $nuevo_nombre = md5( uniqid().$datos_adj["archivo"]["name"]).".".$ext;
                $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
			    
			    if ($form->archivo->receive() && !empty($datos_adj["archivo"]["name"])) {
			         $datos_archivo["nombrereal"]   = $datos_adj["archivo"]["name"];
			         $datos_archivo["tipomime"]     = $datos_adj["archivo"]["type"];
			         $datos_archivo["tamano"]       = $datos_adj["archivo"]["size"];
			         $datos_archivo["nombrecodificado"] = $nuevo_nombre;
			         $datos_archivo["codusuario"]   = App_User::getCodigoUsuario();
					 $datos_archivo["codactividad"]  = (isset($datos["codactividad"]) && !empty($datos["codactividad"]))?$datos["codactividad"]:$codactividad;

			         if (isset($datos["codactividad"]) && !empty($datos["codactividad"])){
                         $codactividad = $datos["codactividad"];
                         $datos_adjuntos = $Planesmejoramiento->getAdjuntosActividad($codactividad);
                         if (count($datos_adjuntos)>0){
                             $Planesmejoramiento->eliminarAdjuntoActividad($datos_adjuntos[0]["coddocumento"]);
                         }
                     }
                     
					 $Planesmejoramiento->guardarAdjuntoActividad($datos_archivo);
			    }
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
            } catch(Exception $e) {
                echo $this->view->priorityMessenger($e->getMessage(), "error");
            }
        }else{
            $form->setStateRedirect();
            $parametros["accion"]="modificar";
            $parametros["codplanmejoramiento"]=$this->_getParam("codplanmejoramiento");
            $accion = $this->_getParam("codactividad");
            if (empty($accion)) $parametros["accion"]="crear";
        }
        $this->_helper->redirector("actividadesplan", "index", "planesmejoramiento", App_Util_SafeUrl::encriptar($parametros, false));
	}

    public function eliminaractividadAction(){
  	      try {
			 $Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
			  
             $codactividad = $this->_getParam("codactividad");
             $datos_adjuntos = $Planesmejoramiento->getAdjuntosActividad($codactividad);
             if (count($datos_adjuntos)>0){
                 $Planesmejoramiento->eliminarAdjuntoActividad($datos_adjuntos[0]["coddocumento"]);
             }
			  
			  $Planesmejoramiento->eliminarActividadPlan($this->_getParam("codactividad"));
			  $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		  $parametros["codplanmejoramiento"]=$this->_getParam("codplanmejoramiento");
		  $this->_helper->redirector("actividadesplan", "index", "planesmejoramiento", App_Util_SafeUrl::encriptar($parametros, false));
	}

    public function usuariosplanAction() {
        $Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
        
        $this->nav->agregar_navegacion("Asignar usuarios a Plan", "","Asignar usuarios a Plan");
		$this->view->nav = $this->nav;
        
        $datos["codplanmejoramiento"] = $this->_getParam("codplanmejoramiento");
        
        $this->view->datosplan = $Planesmejoramiento->getPlan($this->_getParam("codplanmejoramiento"));
        
        $form = new Planesmejoramiento_Form_AsignarUsuario();
		$form->populate($datos);
        $form->setAction($this->view->baseUrl("/planesmejoramiento/index/guardarasignacion"));
        $form->recoverFromRedirect();
		$this->view->form = $form;
		
		$usuarios = new Usuarios_Model_Usuarios();
		$this->view->datos = $usuarios->getUsuarios("PLANES",array("codplanmejoramiento"=>$datos["codplanmejoramiento"]));
		
    }

	public function autolistaAction(){
		$this->_helper->layout->disableLayout ();
	    $campoConsulta = strtolower($this->_getParam ( 'term' ));
	    $datos["codplanmejoramiento"] = $this->_getParam("codplanmejoramiento");
		$items=array();
		if ($campoConsulta){
			$usuarios = new Usuarios_Model_Usuarios();
			$items= $usuarios->cargardatosauto("PLANES",$campoConsulta,$datos);
		}
		$this->view->items=$items;
	}
       
    public function guardarasignacionAction(){
        $form = new Planesmejoramiento_Form_AsignarUsuario();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())){
			try {
				$usuarios = new Usuarios_Model_Usuarios ();
				$datos = $this->getRequest()->getPost();
				unset($datos["usuario"]);
				unset($datos["btnSubmit"]);
				$usuarios->asignarUsuarioPLAN($datos);
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
        } else {
            $form->setStateRedirect();
        }
        $parametros["codplanmejoramiento"] = $datos["codplanmejoramiento"];
        $this->_helper->redirector( "usuariosplan","index","planesmejoramiento",App_Util_SafeUrl::encriptar($parametros, false));
	}
    
	public function desasignarusuarioAction(){
	    $codplanmejoramiento = $this->getRequest ()->getPost ( 'codplanmejoramiento' );
        $seleccionados = $this->_getParam("seleccionados", array());

        if(count($seleccionados)==0) {
			$this->view->priorityMessenger("Debe seleccionar por lo menos un registro", "warning");
			$this->_helper->redirector( "usuariosplan","index","planesmejoramiento",App_Util_SafeUrl::encriptar(array("codplanmejoramiento"=>$codplanmejoramiento),false));
		}
		try {
		    $usuarios = new Usuarios_Model_Usuarios ();
			$usuarios->desasignarUsuarioPLAN($codplanmejoramiento,$seleccionados);
			$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
		} catch (Exception $e) {
			$this->view->priorityMessenger($e->getMessage(), "error");
		}
		$this->_helper->redirector( "usuariosplan","index","planesmejoramiento",App_Util_SafeUrl::encriptar(array("codplanmejoramiento"=>$codplanmejoramiento),false));
	}
	
    
	public function seguimientoactividadAction() {
		$Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
		
		$accion        = $this->_getParam("accion");
		
		$codplanmejoramiento = $this->_getParam("codplanmejoramiento");
		$this->view->datosplan = $Planesmejoramiento->getPlan($codplanmejoramiento);
        
		$codactividad  = $this->_getParam("codactividad");
		$this->view->datosactividad  = $Planesmejoramiento->getActividadPlan($codactividad);
        $this->view->datos_evidencias = $Planesmejoramiento->getEvidenciasActividad($codactividad);

        $params1=App_Util_SafeUrl::encriptar(array("codplanmejoramiento"=>$codplanmejoramiento),true);
        
        $this->nav->agregar_navegacion("Actividades plan de Mejoramiento", "/planesmejoramiento/index/actividadesplan/{$params1}","Actividades plan de Mejoramiento");
        $this->nav->agregar_navegacion("Evidencias Actividad plan de Mejoramiento", "","Evidencias Actividad plan de Mejoramiento");
		$this->view->nav = $this->nav;
        
        $this->view->mostrarform = false;
        if($accion == "crear" || $accion == "modificar") {
	        $form = new Planesmejoramiento_Form_Evidenciaactividad();
            
            $form->setAction($this->view->baseUrl("/planesmejoramiento/index/guardarevidencia"));
	        $form->recoverFromRedirect();
	        $codevidencia = $this->_getParam("codevidencia");
	        if(!empty($codevidencia)){
	            $datos = $Planesmejoramiento->getEvidenciaActividad($codevidencia);
	        }
	        $datos["codplanmejoramiento"] = $codplanmejoramiento;
	        $datos["codactividad"] = $codactividad;
	        $form->populate($datos);
            $this->view->form = $form;
	        $this->view->mostrarform = true;
	        
        }
	}
	
	public function guardarevidenciaAction(){
        $Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
        $form = new Planesmejoramiento_Form_Evidenciaactividad();
        $parametros = array();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $parametros["codplanmejoramiento"]=$this->_getParam("codplanmejoramiento");
                $parametros["codactividad"]=$this->_getParam("codactividad");
                $datos = $this->getRequest()->getPost();
                $codevidencia = $Planesmejoramiento->guardarEvidenciaActividad($datos);
                $datos_adj = $form->archivo->getFileInfo();
                
			    $ext = pathinfo( $datos_adj["archivo"]["name"], PATHINFO_EXTENSION );
			    $nuevo_nombre = md5( uniqid().$datos_adj["archivo"]["name"]).".".$ext;
                $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
			    
			    if ($form->archivo->receive() && !empty($datos_adj["archivo"]["name"])) {
			         $datos_archivo["nombrereal"]   = $datos_adj["archivo"]["name"];
			         $datos_archivo["tipomime"]     = $datos_adj["archivo"]["type"];
			         $datos_archivo["tamano"]       = $datos_adj["archivo"]["size"];
			         $datos_archivo["nombrecodificado"] = $nuevo_nombre;
			         $datos_archivo["codusuario"]   = App_User::getCodigoUsuario();
					 $datos_archivo["codevidencia"]  = (isset($datos["codevidencia"]) && !empty($datos["codevidencia"]))?$datos["codevidencia"]:$codevidencia;

			         if (isset($datos["codevidencia"]) && !empty($datos["codevidencia"])){
                         $codactividad = $datos["codevidencia"];
                         $datos_adjuntos = $Planesmejoramiento->getAdjuntosEvidencia($codevidencia);
                         if (count($datos_adjuntos)>0){
                             $Planesmejoramiento->eliminarAdjuntoEvidencia($datos_adjuntos[0]["codevidencia"]);
                         }
                     }
                     
					 $Planesmejoramiento->guardarAdjuntoEvidencia($datos_archivo);
			    }
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
            } catch(Exception $e) {
                echo $this->view->priorityMessenger($e->getMessage(), "error");
            }
        }else{
            $form->setStateRedirect();
            $parametros["accion"]="modificar";
            $parametros["codplanmejoramiento"]=$this->_getParam("codplanmejoramiento");
            $parametros["codactividad"]=$this->_getParam("codactividad");
            $accion = $this->_getParam("codevidencia");
            if (empty($accion)) $parametros["accion"]="crear";
        }
        $this->_helper->redirector("seguimientoactividad", "index", "planesmejoramiento", App_Util_SafeUrl::encriptar($parametros, false));
	}
	

    public function eliminarseguimientoAction(){
  	      try {
			 $Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
			  
             $codevidencia = $this->_getParam("codevidencia");
             $datos_adjuntos = $Planesmejoramiento->getAdjuntosEvidencia($codevidencia);
             if (count($datos_adjuntos)>0){
                 $Planesmejoramiento->eliminarAdjuntoEvidencia($datos_adjuntos[0]["coddocumento"]);
             }
			  
			  $Planesmejoramiento->eliminarEvidenciaActividad($codevidencia);
			  $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		  $parametros["codplanmejoramiento"]=$this->_getParam("codplanmejoramiento");
		  $parametros["codactividad"]=$this->_getParam("codactividad");
		  $this->_helper->redirector("seguimientoactividad", "index", "planesmejoramiento", App_Util_SafeUrl::encriptar($parametros, false));
	}
		
}